library(tidyverse)
## ── Attaching packages ───────────────────────────────────── tidyverse 1.2.1 ──
## ✔ ggplot2 3.1.0 ✔ purrr 0.3.0
## ✔ tibble 2.0.1 ✔ dplyr 0.7.8
## ✔ tidyr 0.8.2 ✔ stringr 1.3.1
## ✔ readr 1.3.1 ✔ forcats 0.3.0
## ── Conflicts ──────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
library(tidyquant)
## Loading required package: lubridate
##
## Attaching package: 'lubridate'
## The following object is masked from 'package:base':
##
## date
## Loading required package: PerformanceAnalytics
## Loading required package: xts
## Loading required package: zoo
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
##
## Attaching package: 'xts'
## The following objects are masked from 'package:dplyr':
##
## first, last
##
## Attaching package: 'PerformanceAnalytics'
## The following object is masked from 'package:graphics':
##
## legend
## Loading required package: quantmod
## Loading required package: TTR
## Version 0.4-0 included new data defaults. See ?getSymbols.
library(xts)
library(PerformanceAnalytics)
library(quantmod)
library(lubridate)
library(stringr)
library(TTR)
library(tidyr)
library(data.table)
##
## Attaching package: 'data.table'
## The following objects are masked from 'package:xts':
##
## first, last
## The following objects are masked from 'package:lubridate':
##
## hour, isoweek, mday, minute, month, quarter, second, wday,
## week, yday, year
## The following objects are masked from 'package:dplyr':
##
## between, first, last
## The following object is masked from 'package:purrr':
##
## transpose
library(plotly)
##
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
##
## last_plot
## The following object is masked from 'package:stats':
##
## filter
## The following object is masked from 'package:graphics':
##
## layout
library(ggplot2)
t0 <- "2018-01-01"
t1 <- "2020-01-03"
ITOT <- read.csv("https://www.ishares.com/us/products/239724/ishares-core-sp-total-us-stock-market-etf/1467271812596.ajax?fileType=csv&fileName=ITOT_holdings&dataType=fund",
skip = 10,
row.names = NULL,
col.names = c("ticker", "equity", "class", "weight", "price", "shares",
"mkt_value", "ntl_value", "sector", "SEDOL", "ISIN", "exchange"))
ITOT <- ITOT %>%
filter(class == 'Equity')
ITOT
Sectors <- ITOT %>%
split(ITOT$sector)
Sectors$Communication
Sectors$`Consumer Discretionary`
Sectors$`Consumer Staples`
Sectors$Energy
Sectors$Financials
Sectors$`Health Care`
Sectors$Industrials
Sectors$`Information Technology`
Sectors$Materials
Sectors$`Real Estate`
Sectors$Utilities
tickers <- as.vector(ITOT[,1]) %>% na.omit()
communication_tickers <- as.vector(Sectors$Communication[,1]) %>% na.omit()
discretionary_tickers <- as.vector(Sectors$`Consumer Discretionary`[,1]) %>% na.omit()
staples_tickers <- as.vector(Sectors$`Consumer Staples`[,1]) %>% na.omit()
energy_tickers <- as.vector(Sectors$Energy[,1]) %>% na.omit()
financials_tickers <- as.vector(Sectors$Financials[,1]) %>% na.omit()
healthcare_tickers <- as.vector(Sectors$`Health Care`[,1]) %>% na.omit()
industrials_tickers <- as.vector(Sectors$Industrials[,1]) %>% na.omit()
technology_tickers <- as.vector(Sectors$`Information Technology`[,1]) %>% na.omit()
materials_tickers <- as.vector(Sectors$Materials[,1]) %>% na.omit()
realestate_tickers <- as.vector(Sectors$`Real Estate`[,1]) %>% na.omit()
utilities_tickers <- as.vector(Sectors$Utilities[,1]) %>% na.omit()
tickers <- tickers %>%
str_replace(., "BRKB", "BRK-B") %>% #Berkshire Hathaway Class B
str_replace(., "BFA", "BF-A") %>% #Brown-Forman Class A
str_replace(., "BFB", "BF-B") %>% #Brown-Forman Class B
str_replace(., "LGFA", "LGF-A") %>% #Lions Gate Entertainment Class A
str_replace(., "LGFB", "LGF-B") %>% #Lions Gate Entertainment Class B
str_replace(., "LENB", "LEN-B") %>% #Lennar Class B
str_replace(., "CWENA", "CWEN-A") %>% #Clearway Energy Class A
str_replace(., "GEFB", "GEF-B") %>% #Greif Inc Class B
str_replace(., "BH A", "BH-A") #Biglari Holdings Class A
data_raw <- tq_get(tickers,
get = "stock.prices",
from = t0,
to = t1)
## Warning: x = 'BF-AM', get = 'stock.prices': Error: BF-AM download failed after two attempts. Error message:
## HTTP error 404.
## Removing BF-AM.
## Warning: x = 'MOGA', get = 'stock.prices': Error: MOGA download failed after two attempts. Error message:
## HTTP error 404.
## Removing MOGA.
## Warning: x = 'JWB', get = 'stock.prices': Error: JWB download failed after two attempts. Error message:
## HTTP error 404.
## Removing JWB.
## Warning: x = 'GTNA', get = 'stock.prices': Error: GTNA download failed after two attempts. Error message:
## HTTP error 404.
## Removing GTNA.
## Warning: x = '-', get = 'stock.prices': Error: - download failed after two attempts. Error message:
## HTTP error 404.
## Removing -.
## Warning: x = '-', get = 'stock.prices': Error: - download failed after two attempts. Error message:
## HTTP error 404.
## Removing -.
## Warning: x = 'GTXI', get = 'stock.prices': Error: GTXI download failed after two attempts. Error message:
## HTTP error 404.
## Removing GTXI.
## Warning: x = 'HNR', get = 'stock.prices': Error: HNR download failed after two attempts. Error message:
## HTTP error 404.
## Removing HNR.
## Warning: x = '-', get = 'stock.prices': Error: - download failed after two attempts. Error message:
## HTTP error 404.
## Removing -.
## Warning: x = '-', get = 'stock.prices': Error: - download failed after two attempts. Error message:
## HTTP error 404.
## Removing -.
## Warning: x = 'ROKA', get = 'stock.prices': Error: ROKA download failed after two attempts. Error message:
## HTTP error 404.
## Removing ROKA.
## Warning: x = 'OMED', get = 'stock.prices': Error: OMED download failed after two attempts. Error message:
## HTTP error 404.
## Removing OMED.
## Warning: x = 'AIII', get = 'stock.prices': Error: AIII download failed after two attempts. Error message:
## HTTP error 404.
## Removing AIII.
## Warning: x = '-', get = 'stock.prices': Error: - download failed after two attempts. Error message:
## HTTP error 404.
## Removing -.
## Warning: x = '-', get = 'stock.prices': Error: - download failed after two attempts. Error message:
## HTTP error 404.
## Removing -.
## Warning: x = '-', get = 'stock.prices': Error: - download failed after two attempts. Error message:
## HTTP error 404.
## Removing -.
communication_data <- data_raw %>%
filter(symbol %in% communication_tickers)
communication_data_spread <- communication_data %>%
select("symbol", "date", "adjusted") %>%
group_by(symbol) %>%
spread(key = symbol, value = adjusted)
communication_data_xts <- as.xts(communication_data_spread[,-1], order.by = communication_data_spread$date)
discretionary_data <- data_raw %>%
filter(symbol %in% discretionary_tickers)
discretionary_data <- discretionary_data %>%
filter(!symbol %in% "IMBI")
discretionary_data <- discretionary_data %>%
filter(!symbol %in% "XPEL")
discretionary_data_spread <- discretionary_data %>%
select("symbol", "date", "adjusted") %>%
group_by(symbol) %>%
spread(key = symbol, value = adjusted)
discretionary_data_xts <- as.xts(discretionary_data_spread[,-1], order.by = discretionary_data_spread$date)
staples_data <- data_raw %>%
filter(symbol %in% staples_tickers)
staples_data <- staples_data %>%
filter(!symbol %in% "RKDA")
staples_data <- staples_data %>%
filter(!symbol %in% "BRBR")
staples_data_spread <- staples_data %>%
select("symbol", "date", "adjusted") %>%
group_by(symbol) %>%
spread(key = symbol, value = adjusted)
staples_data_xts <- as.xts(staples_data_spread[,-1], order.by = staples_data_spread$date)
energy_data <- data_raw %>%
filter(symbol %in% energy_tickers)
energy_data <- energy_data %>%
filter(!symbol %in% "PED")
energy_data_spread <- energy_data %>%
select("symbol", "date", "adjusted") %>%
group_by(symbol) %>%
spread(key = symbol, value = adjusted)
energy_data_xts <- as.xts(energy_data_spread[,-1], order.by = energy_data_spread$date)
financials_data <- data_raw %>%
filter(symbol %in% financials_tickers)
financials_data <- financials_data %>%
filter(!symbol %in% "CRDA")
financials_data <- financials_data %>%
filter(!symbol %in% "OPRT")
financials_data <- financials_data %>%
filter(!symbol %in% "PLMR")
financials_data <- financials_data %>%
filter(!symbol %in% "SPFI")
financials_data_spread <- financials_data %>%
select("symbol", "date", "adjusted") %>%
group_by(symbol) %>%
spread(key = symbol, value = adjusted)
financials_data_xts <- as.xts(financials_data_spread[,-1], order.by = financials_data_spread$date)
healthcare_data <- data_raw %>%
filter(symbol %in% healthcare_tickers)
healthcare_data <- healthcare_data %>%
filter(!symbol %in% "ALIM")
healthcare_data <- healthcare_data %>%
filter(!symbol %in% "AVTR")
healthcare_data <- healthcare_data %>%
filter(!symbol %in% "RAPT")
healthcare_data_spread <- healthcare_data %>%
distinct() %>%
select("symbol", "date", "adjusted") %>%
group_by(symbol) %>%
spread(key = symbol, value = adjusted)
healthcare_data_xts <- as.xts(healthcare_data_spread[,-1], order.by = healthcare_data_spread$date)
industrials_data <- data_raw %>%
filter(symbol %in% industrials_tickers)
industrials_data_spread <- industrials_data %>%
select("symbol", "date", "adjusted") %>%
group_by(symbol) %>%
spread(key = symbol, value = adjusted)
industrials_data_xts <- as.xts(industrials_data_spread[,-1], order.by = industrials_data_spread$date)
technology_data <- data_raw %>%
filter(symbol %in% technology_tickers)
technology_data_spread <- technology_data %>%
select("symbol", "date", "adjusted") %>%
group_by(symbol) %>%
spread(key = symbol, value = adjusted)
technology_data_xts <- as.xts(technology_data_spread[,-1], order.by = technology_data_spread$date)
materials_data <- data_raw %>%
filter(symbol %in% materials_tickers)
materials_data_spread <- materials_data %>%
select("symbol", "date", "adjusted") %>%
group_by(symbol) %>%
spread(key = symbol, value = adjusted)
materials_data_xts <- as.xts(materials_data_spread[,-1], order.by = materials_data_spread$date)
realestate_data <- data_raw %>%
filter(symbol %in% realestate_tickers)
realestate_data <- realestate_data %>%
filter(!symbol %in% "DHC")
realestate_data_spread <- realestate_data %>%
select("symbol", "date", "adjusted") %>%
group_by(symbol) %>%
spread(key = symbol, value = adjusted)
realestate_data_xts <- as.xts(realestate_data_spread[,-1], order.by = realestate_data_spread$date)
utilities_data <- data_raw %>%
filter(symbol %in% utilities_tickers)
utilities_data_spread <- utilities_data %>%
select("symbol", "date", "adjusted") %>%
group_by(symbol) %>%
spread(key = symbol, value = adjusted)
utilities_data_xts <- as.xts(utilities_data_spread[,-1], order.by = utilities_data_spread$date)
table.Stats(communication_data_xts)
table.Stats(discretionary_data_xts)
table.Stats(staples_data_xts)
table.Stats(energy_data_xts)
table.Stats(financials_data_xts)
table.Stats(healthcare_data_xts)
table.Stats(industrials_data_xts)
table.Stats(technology_data_xts)
table.Stats(materials_data_xts)
table.Stats(realestate_data_xts)
table.Stats(utilities_data_xts)
communication_data_ret = Return.calculate(xts(communication_data_xts), method="discrete")
communication_data_ret_annual <- Return.annualized(communication_data_ret, scale = 252, geometric = TRUE)
communication_data_sd = StdDev(xts(communication_data_xts), method="discrete")
communication_data_sd_annual <- StdDev.annualized(communication_data_ret, scale = 252, geometric = TRUE)
communication_data_riskreturn <- rbind(communication_data_ret_annual, communication_data_sd_annual)
communication_data_riskreturn <- as.data.frame(communication_data_riskreturn)
communication_data_riskreturn_t <- transpose(communication_data_riskreturn)
rownames(communication_data_riskreturn_t) <- colnames(communication_data_riskreturn)
colnames(communication_data_riskreturn_t) <- c("annual_ret","annual_stdev")
communication_data_riskreturn_t$ticker <- rownames(communication_data_riskreturn_t)
communication_data_riskreturn_t %>%
plot_ly(type = "scatter",
mode = "markers",
x = ~ annual_ret,
y = ~ annual_stdev,
hoverinfo = 'text',
text = ~paste('</br> Ticker: ', ticker,
'</br> Ret: ', annual_ret,
'</br> SD: ', annual_stdev)) %>%
layout(title = "communication")
discretionary_data_ret = Return.calculate(xts(discretionary_data_xts), method="discrete")
discretionary_data_ret_annual <- Return.annualized(discretionary_data_ret, scale = 252, geometric = TRUE)
discretionary_data_sd = StdDev(xts(discretionary_data_xts), method="discrete")
discretionary_data_sd_annual <- StdDev.annualized(discretionary_data_ret, scale = 252, geometric = TRUE)
discretionary_data_riskreturn <- rbind(discretionary_data_ret_annual, discretionary_data_sd_annual)
discretionary_data_riskreturn <- as.data.frame(discretionary_data_riskreturn)
discretionary_data_riskreturn_t <- transpose(discretionary_data_riskreturn)
rownames(discretionary_data_riskreturn_t) <- colnames(discretionary_data_riskreturn)
colnames(discretionary_data_riskreturn_t) <- c("annual_ret","annual_stdev")
discretionary_data_riskreturn_t$ticker <- rownames(discretionary_data_riskreturn_t)
discretionary_data_riskreturn_t %>%
plot_ly(type = "scatter",
mode = "markers",
x = ~ annual_ret,
y = ~ annual_stdev,
hoverinfo = 'text',
text = ~paste('</br> Ticker: ', ticker,
'</br> Ret: ', annual_ret,
'</br> SD: ', annual_stdev)) %>%
layout(title = "discretionary")
## Warning: Ignoring 1 observations
staples_data_ret = Return.calculate(xts(staples_data_xts), method="discrete")
staples_data_ret_annual <- Return.annualized(staples_data_ret, scale = 252, geometric = TRUE)
staples_data_sd = StdDev(xts(staples_data_xts), method="discrete")
staples_data_sd_annual <- StdDev.annualized(staples_data_ret, scale = 252, geometric = TRUE)
staples_data_riskreturn <- rbind(staples_data_ret_annual, staples_data_sd_annual)
staples_data_riskreturn <- as.data.frame(staples_data_riskreturn)
staples_data_riskreturn_t <- transpose(staples_data_riskreturn)
rownames(staples_data_riskreturn_t) <- colnames(staples_data_riskreturn)
colnames(staples_data_riskreturn_t) <- c("annual_ret","annual_stdev")
staples_data_riskreturn_t$ticker <- rownames(staples_data_riskreturn_t)
staples_data_riskreturn_t %>%
plot_ly(type = "scatter",
mode = "markers",
x = ~ annual_ret,
y = ~ annual_stdev,
hoverinfo = 'text',
text = ~paste('</br> Ticker: ', ticker,
'</br> Ret: ', annual_ret,
'</br> SD: ', annual_stdev)) %>%
layout(title = "staples")
energy_data_ret = Return.calculate(xts(energy_data_xts), method="discrete")
energy_data_ret_annual <- Return.annualized(energy_data_ret, scale = 252, geometric = TRUE)
energy_data_sd = StdDev(xts(energy_data_xts), method="discrete")
energy_data_sd_annual <- StdDev.annualized(energy_data_ret, scale = 252, geometric = TRUE)
energy_data_riskreturn <- rbind(energy_data_ret_annual, energy_data_sd_annual)
energy_data_riskreturn <- as.data.frame(energy_data_riskreturn)
energy_data_riskreturn_t <- transpose(energy_data_riskreturn)
rownames(energy_data_riskreturn_t) <- colnames(energy_data_riskreturn)
colnames(energy_data_riskreturn_t) <- c("annual_ret","annual_stdev")
energy_data_riskreturn_t$ticker <- rownames(energy_data_riskreturn_t)
energy_data_riskreturn_t %>%
plot_ly(type = "scatter",
mode = "markers",
x = ~ annual_ret,
y = ~ annual_stdev,
hoverinfo = 'text',
text = ~paste('</br> Ticker: ', ticker,
'</br> Ret: ', annual_ret,
'</br> SD: ', annual_stdev)) %>%
layout(title = "energy")
financials_data_ret = Return.calculate(xts(financials_data_xts), method="discrete")
financials_data_ret_annual <- Return.annualized(financials_data_ret, scale = 252, geometric = TRUE)
financials_data_sd = StdDev(xts(financials_data_xts), method="discrete")
financials_data_sd_annual <- StdDev.annualized(financials_data_ret, scale = 252, geometric = TRUE)
financials_data_riskreturn <- rbind(financials_data_ret_annual, financials_data_sd_annual)
financials_data_riskreturn <- as.data.frame(financials_data_riskreturn)
financials_data_riskreturn_t <- transpose(financials_data_riskreturn)
rownames(financials_data_riskreturn_t) <- colnames(financials_data_riskreturn)
colnames(financials_data_riskreturn_t) <- c("annual_ret","annual_stdev")
financials_data_riskreturn_t$ticker <- rownames(financials_data_riskreturn_t)
financials_data_riskreturn_t %>%
plot_ly(type = "scatter",
mode = "markers",
x = ~ annual_ret,
y = ~ annual_stdev,
hoverinfo = 'text',
text = ~paste('</br> Ticker: ', ticker,
'</br> Ret: ', annual_ret,
'</br> SD: ', annual_stdev)) %>%
layout(title = "financials")
healthcare_data_ret = Return.calculate(xts(healthcare_data_xts), method="discrete")
healthcare_data_ret_annual <- Return.annualized(healthcare_data_ret, scale = 252, geometric = TRUE)
healthcare_data_sd = StdDev(xts(healthcare_data_xts), method="discrete")
healthcare_data_sd_annual <- StdDev.annualized(healthcare_data_ret, scale = 252, geometric = TRUE)
healthcare_data_riskreturn <- rbind(healthcare_data_ret_annual, healthcare_data_sd_annual)
healthcare_data_riskreturn <- as.data.frame(healthcare_data_riskreturn)
healthcare_data_riskreturn_t <- transpose(healthcare_data_riskreturn)
rownames(healthcare_data_riskreturn_t) <- colnames(healthcare_data_riskreturn)
colnames(healthcare_data_riskreturn_t) <- c("annual_ret","annual_stdev")
healthcare_data_riskreturn_t$ticker <- rownames(healthcare_data_riskreturn_t)
healthcare_data_riskreturn_t %>%
plot_ly(type = "scatter",
mode = "markers",
x = ~ annual_ret,
y = ~ annual_stdev,
hoverinfo = 'text',
text = ~paste('</br> Ticker: ', ticker,
'</br> Ret: ', annual_ret,
'</br> SD: ', annual_stdev)) %>%
layout(title = "healthcare")
industrials_data_ret = Return.calculate(xts(industrials_data_xts), method="discrete")
industrials_data_ret_annual <- Return.annualized(industrials_data_ret, scale = 252, geometric = TRUE)
industrials_data_sd = StdDev(xts(industrials_data_xts), method="discrete")
industrials_data_sd_annual <- StdDev.annualized(industrials_data_ret, scale = 252, geometric = TRUE)
industrials_data_riskreturn <- rbind(industrials_data_ret_annual, industrials_data_sd_annual)
industrials_data_riskreturn <- as.data.frame(industrials_data_riskreturn)
industrials_data_riskreturn_t <- transpose(industrials_data_riskreturn)
rownames(industrials_data_riskreturn_t) <- colnames(industrials_data_riskreturn)
colnames(industrials_data_riskreturn_t) <- c("annual_ret","annual_stdev")
industrials_data_riskreturn_t$ticker <- rownames(industrials_data_riskreturn_t)
industrials_data_riskreturn_t %>%
plot_ly(type = "scatter",
mode = "markers",
x = ~ annual_ret,
y = ~ annual_stdev,
hoverinfo = 'text',
text = ~paste('</br> Ticker: ', ticker,
'</br> Ret: ', annual_ret,
'</br> SD: ', annual_stdev)) %>%
layout(title = "industrials")
technology_data_ret = Return.calculate(xts(technology_data_xts), method="discrete")
technology_data_ret_annual <- Return.annualized(technology_data_ret, scale = 252, geometric = TRUE)
technology_data_sd = StdDev(xts(technology_data_xts), method="discrete")
technology_data_sd_annual <- StdDev.annualized(technology_data_ret, scale = 252, geometric = TRUE)
technology_data_riskreturn <- rbind(technology_data_ret_annual, technology_data_sd_annual)
technology_data_riskreturn <- as.data.frame(technology_data_riskreturn)
technology_data_riskreturn_t <- transpose(technology_data_riskreturn)
rownames(technology_data_riskreturn_t) <- colnames(technology_data_riskreturn)
colnames(technology_data_riskreturn_t) <- c("annual_ret","annual_stdev")
technology_data_riskreturn_t$ticker <- rownames(technology_data_riskreturn_t)
technology_data_riskreturn_t %>%
plot_ly(type = "scatter",
mode = "markers",
x = ~ annual_ret,
y = ~ annual_stdev,
hoverinfo = 'text',
text = ~paste('</br> Ticker: ', ticker,
'</br> Ret: ', annual_ret,
'</br> SD: ', annual_stdev)) %>%
layout(title = "technology")
materials_data_ret = Return.calculate(xts(materials_data_xts), method="discrete")
materials_data_ret_annual <- Return.annualized(materials_data_ret, scale = 252, geometric = TRUE)
materials_data_sd = StdDev(xts(materials_data_xts), method="discrete")
materials_data_sd_annual <- StdDev.annualized(materials_data_ret, scale = 252, geometric = TRUE)
materials_data_riskreturn <- rbind(materials_data_ret_annual, materials_data_sd_annual)
materials_data_riskreturn <- as.data.frame(materials_data_riskreturn)
materials_data_riskreturn_t <- transpose(materials_data_riskreturn)
rownames(materials_data_riskreturn_t) <- colnames(materials_data_riskreturn)
colnames(materials_data_riskreturn_t) <- c("annual_ret","annual_stdev")
materials_data_riskreturn_t$ticker <- rownames(materials_data_riskreturn_t)
materials_data_riskreturn_t %>%
plot_ly(type = "scatter",
mode = "markers",
x = ~ annual_ret,
y = ~ annual_stdev,
hoverinfo = 'text',
text = ~paste('</br> Ticker: ', ticker,
'</br> Ret: ', annual_ret,
'</br> SD: ', annual_stdev)) %>%
layout(title = "materials")
realestate_data_ret = Return.calculate(xts(realestate_data_xts), method="discrete")
realestate_data_ret_annual <- Return.annualized(realestate_data_ret, scale = 252, geometric = TRUE)
realestate_data_sd = StdDev(xts(realestate_data_xts), method="discrete")
realestate_data_sd_annual <- StdDev.annualized(realestate_data_ret, scale = 252, geometric = TRUE)
realestate_data_riskreturn <- rbind(realestate_data_ret_annual, realestate_data_sd_annual)
realestate_data_riskreturn <- as.data.frame(realestate_data_riskreturn)
realestate_data_riskreturn_t <- transpose(realestate_data_riskreturn)
rownames(realestate_data_riskreturn_t) <- colnames(realestate_data_riskreturn)
colnames(realestate_data_riskreturn_t) <- c("annual_ret","annual_stdev")
realestate_data_riskreturn_t$ticker <- rownames(realestate_data_riskreturn_t)
realestate_data_riskreturn_t %>%
plot_ly(type = "scatter",
mode = "markers",
x = ~ annual_ret,
y = ~ annual_stdev,
hoverinfo = 'text',
text = ~paste('</br> Ticker: ', ticker,
'</br> Ret: ', annual_ret,
'</br> SD: ', annual_stdev)) %>%
layout(title = "realestate")
utilities_data_ret = Return.calculate(xts(utilities_data_xts), method="discrete")
utilities_data_ret_annual <- Return.annualized(utilities_data_ret, scale = 252, geometric = TRUE)
utilities_data_sd = StdDev(xts(utilities_data_xts), method="discrete")
utilities_data_sd_annual <- StdDev.annualized(utilities_data_ret, scale = 252, geometric = TRUE)
utilities_data_riskreturn <- rbind(utilities_data_ret_annual, utilities_data_sd_annual)
utilities_data_riskreturn <- as.data.frame(utilities_data_riskreturn)
utilities_data_riskreturn_t <- transpose(utilities_data_riskreturn)
rownames(utilities_data_riskreturn_t) <- colnames(utilities_data_riskreturn)
colnames(utilities_data_riskreturn_t) <- c("annual_ret","annual_stdev")
utilities_data_riskreturn_t$ticker <- rownames(utilities_data_riskreturn_t)
utilities_data_riskreturn_t %>%
plot_ly(type = "scatter",
mode = "markers",
x = ~ annual_ret,
y = ~ annual_stdev,
hoverinfo = 'text',
text = ~paste('</br> Ticker: ', ticker,
'</br> Ret: ', annual_ret,
'</br> SD: ', annual_stdev)) %>%
layout(title = "utilities")